package cn.itsource.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebConfigurer implements WebMvcConfigurer {

    @Autowired
    private LoginInterceptor loginInterceptor;

    // 这个方法用来注册拦截器，我们自己写好的拦截器需要通过这里添加注册才能生效
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // addPathPatterns("/**") 表示拦截所有的请求，
        // excludePathPatterns("/login", "/register") 表示除了登陆与注册之外，因为登陆注册不需要登陆也可以访问
        //将自定义的拦截器，添加到 WebMvcConfigurer 的配置类中，让拦截器能生效
        registry.addInterceptor(loginInterceptor).addPathPatterns("/**")
                .excludePathPatterns("/login/**", "register/**")
                //还需要放行swagger-ui所需访问的页面资源
                .excludePathPatterns("/webjars/**")
                .excludePathPatterns("/swagger-resources/**")
                .excludePathPatterns("/v2/**")
                .excludePathPatterns("/swagger-ui.html*")
                .excludePathPatterns("/file/**") //放行文件上传请求
                //店铺入驻时，注册请求也需要放行
                .excludePathPatterns("/shop/settlement**")
                //由于现在是前后端分离的项目，后台的代码没有任何静态资源，所以不需要配置
                .excludePathPatterns("/wechat/**");//放行微信第三方登录的请求URL
    }

}
